// config/db.go
package config

import (
	"fmt"
	"time"

	"gorm.io/driver/postgres"
	"gorm.io/gorm"
)

var DB *gorm.DB

func InitDB() *gorm.DB {
	// PostgreSQL DSN
	dsn := "host=localhost port=54321 user=SYSTEM dbname=TEST password=7777777wwh sslmode=disable"

	// 连接数据库
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		panic(fmt.Sprintf("数据库连接失败: %v", err))
	}

	// 设置连接池
	sqlDB, err := db.DB()
	if err != nil {
		panic(fmt.Sprintf("获取底层数据库连接失败: %v", err))
	}
	sqlDB.SetMaxIdleConns(5)                   // 最大空闲连接数
	sqlDB.SetMaxOpenConns(10)                  // 最大连接数
	sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最长存活时间
	sqlDB.SetConnMaxIdleTime(10 * time.Minute) // 空闲连接最长存活时间

	DB = db
	fmt.Println("✅ 数据库连接成功！")
	return db
}
